/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.CapaFisica;
import fisica.PrincipioActivoMedicamentoFisica;
import hibernate.objeto.PrincipioActivoMedicamento;
import java.util.Vector;

/**
 *
 * @author Gonzalo
 */
public class PrincipioActivoMedicamentoLogica extends CapaLogica {

    /**
     * Crea y persiste el principio activo del medicamento.
     *
     * @param datosMedicamento Los datos del principio activo
     * @param idPrincipioActivoMedicamento El id del objeto
     * creada para su posterior recuperación
     * @return true si se agregó/modificó correctamente, false en caso contrario
     */
    public static boolean agregarOModificarPrincipioActivoMedicamento(
            Object[] datosMedicamento, int[] idPrincipioActivoMedicamento) {
        //Crea el objeto
        PrincipioActivoMedicamento principioActivoMedicamento =
                crearUObtienerObjetoPrincipioActivoMedicamentoLogica(
                datosMedicamento);

        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(principioActivoMedicamento)) {
            idPrincipioActivoMedicamento[0] = principioActivoMedicamento.
                    getIdPrincipioActivoMedicamento();
            return true;
        } else {
            return false;
        }
    }

    /**
     * Crea el objeto principio activo y ya existe lo ontiene de la
     * base de datos.
     *
     * @param datosMedicamento El nombre del principio activo
     * del medicamento a crear
     * @return El objeto PrincipioActivo recien creado u obtenido
     */
    private static PrincipioActivoMedicamento
            crearUObtienerObjetoPrincipioActivoMedicamentoLogica(
            Object[] datosMedicamento) {

        PrincipioActivoMedicamento retorno =
                getPrincipioActivoMedicamentoPorNombreYEnBd(
                datosMedicamento[CapaLogica.
                MEDICAMENTO_PRINCIPIO_ACTIVO].toString());

        if (retorno == null) {
            retorno = new PrincipioActivoMedicamento();
            retorno.setNombrePrincipioActivoMedicamento(
                    datosMedicamento[CapaLogica.
                    MEDICAMENTO_PRINCIPIO_ACTIVO].toString());
            retorno.setEnBdPrincipioActivoMedicamento(true);
        }
        
        return retorno;
    }

    /**
     * Retorna el objeto PrincipioActivoMedicamento según el id.
     *
     * @param idPrincipioActivoMedicamento El id del principio activo
     * @return El objeto PrincipioActivoMedicamento consultado, null si no existe
     */
    public static PrincipioActivoMedicamento getPrincipioActivoMedicamentoPorId(
            int idPrincipioActivoMedicamento) {
        return PrincipioActivoMedicamentoFisica.
                getPrincipioActivoMedicamentoPorId(idPrincipioActivoMedicamento);
    }

    /**
     * Retorna el vector de objetos PrincipioActivoMedicamento según el nombre
     * del principio activo.
     *
     * @param nombrePrincipioActivo El nombre del principio activo
     * @return El vector de objetos PrincipioActivo consultado, null si no existe
     */
    public static Vector<PrincipioActivoMedicamento>
            getVectorPrincipioActivoMedicamentoPorNombreYEnBd(
            String principioActivoMedicamento){
        return PrincipioActivoMedicamentoFisica.
                getVectorPrincipioActivoMedicamentoPorNombreYEnBd(
                reemplazarUnApostrofoPorDosApostrofos(
                principioActivoMedicamento), true);
    }

    /**
     * Retorna el objeto PrincipioActivoMedicamento según el nombre principio
     * activo.
     *
     * @param principioActivo El nombre del principio activo
     * @return El objeto PrincipioActivo consultado, null si no existe
     */
    public static PrincipioActivoMedicamento
            getPrincipioActivoMedicamentoPorNombreYEnBd(
            String principioActivoMedicamento) {
        return PrincipioActivoMedicamentoFisica.
                getPrincipioActivoMedicamentoPorNombreYEnBd(
                reemplazarUnApostrofoPorDosApostrofos(
                principioActivoMedicamento), true);
    }

    /**
     * Retorna el texto HTML correspondiente a la información del principio
     * activo.
     * @param principioActivo El nombre del principio activo
     * @param contraindicaciones Las contraindicaciones
     * @param precauciones Las precauciones
     * @param embarazoYLactancia El embarazo y la lactancia
     * @param interacciones Las interacciones
     * @return El String que contiene el HTML
     */
    public static String getPrincipioActivoHTML (String principioActivo,
            String contraindicaciones, String precauciones,
            String embarazoYLactancia, String interacciones) {
        String stringHTML = "<head><base href=\"file:d:/\"></head>"
                    + "<b>" + principioActivo + "</b><br><br>"
                    + "<font color=\"blue\">Contraindicaciones</font><br>"
                    + "<font face=\"arial\">" + contraindicaciones + "</font><br>"
                    + "<font color=\"blue\">Precauciones</font><br>"
                    + "<font face=\"arial\">" + precauciones + "</font><br>"
                    + "<font color=\"blue\">Embarazo y lactancia</font><br>"
                    + "<font face=\"arial\">" + embarazoYLactancia + "</font><br>"
                    + "<font color=\"blue\">Interacciones</font><br>"
                    + "<font face=\"arial\">" + interacciones + "</font><br>";
        return stringHTML;
    }

    /**
     * Retorna el texto HTML correspondiente a la información del principio
     * activo con asociaciones.
     * @param principioActivo El nombre del principio activo
     * @return El String que contiene el HTML
     */
    public static String getAsociacionPrincipioActivoHTML (
            String principioActivo) {
        String stringHTML = "<head><base href=\"file:d:/\"></head>"
                    + "<b>" + principioActivo + "</b><br><br>"
                    + "<font face=\"arial\"> Si usted esta ingresando a una "
                    + "Asociación"
                    + "de Principios Activos, deberá buscar las "
                    + "interacciones de cada Principio Activo de "
                    + "forma individual</font><br>";
        return stringHTML;
    }

}
